Initialisierung von Variablen in ST

Syntax
name_1, name_2 : data-type := literal;
Bedeutung

→Zuweisung eines →Initialisierungswerts bei der Deklaration von Variablen
Sie können interne →Variablen, →Eingangsvariablen, →Ausgangsvariablen und →globale Variablen innerhalb der Deklaration eines →Programms, eines →Funktionsbausteins oder einer →Funktion initialisieren.

Der Ausdruck auf der rechten Seite des Zuweisungsoperators := darf ein →konstanter Ausdruck sein (in Übereinstimmung mit dem →Datentyp).
Im Folgenden die wichtigsten Sprachkonstrukte, die Sie verwenden können:

  • ein boolesches →Literal

    Mögliche boolesche Literale

    Entsprechungen für "TRUE"

    Entsprechungen für "FALSE"

    BOOL#TRUE

    BOOL#FALSE

    BOOL#1

    BOOL#0

    TRUE

    FALSE 

    1

    0

  • ein →Bitfolge-Literal

    Beispiele für Bitfolge-Literale

    Beschreibung

    Beispiele

    Ganzzahl

    0, 123_4, +986

    Zur Basis 2 (Binär-Literal)

    2#1111_1111 (255 dezimal), 2#1110_0000 (224 dezimal)

    Zur Basis 8 (Oktal-Literal)

    8#377 (255 dezimal), 8#340 (224 dezimal)

    Zur Basis 16 (Hexadezimal-Literal)

    16#FF oder 16#ff (255 dezimal), 16#E0 oder 16#e0  (224 dezimal)

    obige Möglichkeiten als Literal mit Typangabe BYTE, WORD, DWORD oder LWORD
    (sofern der Wert im Wertbereich des entsprechenden Datentyps liegt

    WORD#986, WORD#16#FF (255 dezimal)

    BOOL ist ein Bitfolge-Datentyp. Es sind jedoch nur bestimmte →Boolesche Literale möglich.

  • ein →Integer-Literal

    Beispiele für Integer-Literale

    Beschreibung

    Beispiele

    Ganzzahl

    -12, 0, 123_4, +986

    Zur Basis 2 (Binär-Literal)

    2#1111_1111 (255 dezimal), 2#1110_0000 (224 dezimal)

    Zur Basis 8 (Oktal-Literal)

    8#377 (255 dezimal), 8#340 (224 dezimal)

    Zur Basis 16 (Hexadezimal-Literal)

    16#FF oder 16#ff (255 dezimal), 16#E0 oder 16#e0  (224 dezimal)

    obige Möglichkeiten als Literal mit Typangabe SINT, INT, DINT, LINT, USINT, UINT, UDINT, ULINT
    (sofern der Wert im Wertbereich des entsprechenden Datentyps liegt

    INT#-12, INT#16#FF (255 dezimal)

  • ein →Real-Literal vom Datentyp REAL oder LREAL

    Beispiele für Real-Literale

    Beschreibung

    Beispiele

    Real-Literal

    0, 0.0, 0.4560, 3.14159_26

    Real-Literal mit Exponenten

    -1.34E-12, -1.34e-12
    1.0E+6, 1.0e+6, 1E+6
    1.234E6, 1.234e6

    obige Möglichkeiten als Literal mit Typangabe REAL oder LREAL
    (sofern der Wert im Wertbereich des entsprechenden Datentyps liegt

    REAL#0.0REAL#1.0E+6

  • ein →Zeitliteral

    Beispiele für Zeitdauer-Literale: Sie müssen Daten für Zeitdauer, wie Tage d, Stunden h, Minuten m, Sekunden s und Sekunden-Abschnitte (ms für Millisekunden, us für Mikrosekunden, ns für Nanosekunden) oder Kombinationen davon, in der Weise angeben, wie in der folgenden Tabelle gezeigt. Sie können die Zeitdauer-Einheiten durch Unterstrich-Zeichen trennen. Außerdem können Sie die Einheiten in Groß- oder Kleinbuchstaben eingeben, zum Beispiel s oder S für Sekunden.

    Beschreibung

    Beispiele

    Zeitdauer-Literale ohne Unterstriche

    kurzes Präfix

    T#14ms, T#14.7s, T#14.7m, T#14.7h, T#14.7d, T#14h12m, t#5d14h12m18s3.5ms

    langes Präfix

    TIME#14ms, time#14h12m

    Zeitdauer-Literale mit Unterstrichen

    kurzes Präfix

    T#14h_12m, t#5d_14h_12m_18s_3.5ms

    langes Präfix

    TIME#14h_12m, time#5d_14h_12m_18s_3.5ms

    Beachten Sie, dass Ihr eingesetztes →Zielsystem die Verwendung von Zeitdauer-Literalen in Neuron Power Engineer beeinflussen kann (siehe "Zielsystem-spezifische Eigenschaften und Einschränkungen").

    Beispiele für Literale für Datum und Tageszeit: Bei den Literalen für Tageszeit und für Datum und Zeit sind die Sekunden-Abschnitte (nach dem . eingeben) optional.

    Beschreibung

    Beispiele

    Literale für Datum

    kurzes Präfix

    D#1984-06-25

    langes Präfix

    DATE#1984-06-25

    Literale für Datum und Zeit

    kurzes Präfix

    DT#1984-06-25-15:36:55.360_227_400

    langes Präfix

    DATE_AND_TIME#1984-06-25-15:36:55.360227400

    Literale für Tageszeit

    kurzes Präfix

    TOD#15:36:55.36

    langes Präfix

    TIME_OF_DAY#15:36:55.36

    Beachten Sie, dass Ihr eingesetztes →Zielsystem die Verwendung dieser Literale in Neuron Power Engineerbeeinflussen kann (siehe "Zielsystem-spezifische Eigenschaften und Einschränkungen").

  • ein →Zeichenfolge-Literal

    Beispiele für Zeichenfolge-Literale: Einzel-Byte-Zeichenfolgen bestehen aus keinem oder mehreren Zeichen, denen das einfache Anführungszeichen ' vorangestellt ist und die mit diesem Zeichen geschlossen werden.
    Doppel-Byte-Zeichenfolgen, die mit dem doppelten Anführungszeichen " eingeschlossen werden, werden hingegen in Neuron Power Engineer für Zeichenfolge-Literal nicht unterstützt.

    Einzel-Byte-Zeichenfolgen sind:

    Beschreibung

    Beispiele

    STRING-Literal

    'OK', 'ABCDEF'

    STRING-Literal mit Typangabe

    STRING#'OK', STRING#'ABCDEF'

    CHAR-Literal

    'B','T'

    CHAR-Literal mit Typangabe

    CHAR#'B',CHAR#'T'

    Kombinationen von 3 Zeichen, beginnend mit dem Dollar-Zeichen ($) und gefolgt von 2 Hexadezimal-Ziffern, werden in Neuron Power Engineer als entsprechendes Zeichen des ANSI-C-Zeichensatzes interpretiert.
    Auf diese Weise können Sie Sonderzeichen, wie z.B. Umlaute, für Einzel-Byte-Zeichenfolgen eingeben. Derzeit werden solche Sonderzeichen in Neuron Power Engineer (z.B. in der Sicht Variablenwerte) jedoch so ausgegeben, wie sie eingegeben wurden.
    Hier eine Auswahl an Sonderzeichen (eine Liste von Sonderzeichen und der entsprechenden Hexadezimal-Ziffernfinden Sie unter https://www.ascii-code.com/):

    Dezimalwert

    Hexadezimal-Ziffer

    Einzugeben

    Sonderzeichen

    128

    80

    $80

    163

    A3

    $A3

    £

    169

    A9

    $A9

    ©

    174

    AE

    $AE

    ®

    177

    B1

    $B1

    ±

    178

    B2

    $B2

    ² (hochgestellte Ziffer "2")

    179

    B3

    $B3

    ³ (hochgestellte Ziffer "3")

    188

    BC

    $BC

    ¼

    189

    BD

    $BD

    ½

    190

    BE

    $BE

    ¾

    196

    C4

    $C4

    Ä

    214

    D6

    $D6

    Ö

    220

    DC

    $DC

    Ü

    223

    DF

    $DF

    ß

    228

    E4

    $E4

    ä

    246

    F6

    $F6

    ö

    252

    FC

    $FC

    ü


    Falls die Zeichenkombination '$00' einem einzelnen Zeichen einer STRING-Variable zugewiesen wird, endet die Zeichenfolge der STRING-Variable an dieser Position. Solche Zeichenfolge werden auch in der Sicht Variablenwerte bei $00 beendet.
    In Zuweisungen wird jedoch die vollständige Zeichenfolge übernommen. So ist es möglich, dass die Sicht Variablenwerte einzelne Zeichen hinter $00 darstellt, falls Sie auf zugewiesenen Zeichen hinter $00 zugreifen.

    Zusätzlich sind die folgenden Angaben für Einzel-Byte-Zeichenfolgen möglich:

    Angabe

    Bedeutung

    ''

    leere Zeichenfolge

    ' '

    Zeichenfolge mit Leerzeichen

    '$''

    Zeichenfolge mit einfachem Anführungszeichen '

    '"'

    Zeichenfolge mit doppeltem Anführungszeichen "

    Zusätzlich sind die folgenden Angaben für Zwei-Zeichen-Kombinationen in Einzel-Byte-Zeichenfolgen möglich:

    Angabe

    Bedeutung

    $'

    Zeichenfolge mit einfachem Anführungszeichen '

    $$

    Zeichenfolge mit Dollarzeichen $

    $L oder $l

    Zeichenfolge mit Zeilenvorschub ("Line feed")

    $N oder $n

    Zeichenfolge mit neuer Zeile ("Newline")

    $P oder $p

    Zeichenfolge mit Seitenvorschub ("Form feed (page)")

    $R oder $r

    Zeichenfolge mit Wagenrücklauf ("Carriage return")

    $T oder $t

    Zeichenfolge mit Tabulator

  • ein →benanntes Element eines Datentyps mit benannten Werten

  • Strukturinitialisierung (Initialisierung von Strukturelementen)

  • Operatoren (z.B. +, -, *, /)

ARRAY-Variablen initialisieren Sie analog zu "Deklaration eines ARRAY-Datentyps in ST".
Informationen zur Initialisierung von Referenz-Variablen finden Sie unter "Deklaration von Referenz-Variablen (inkl. Zuweisungen darauf)".

Beispiel
VAR CONSTANT
  PI : REAL := 3.141592;
END_VAR
 
VAR
  var1 : REAL := 3.141592;
  var2 : DINT := 4711;
END_VAR
 
VAR
  var3  : INT := TrafficLight#Red; 
  (* initializing the variable 'var3' with the named element 'Red' of the data type 'TrafficLight' *)
END_VAR
 
VAR
  VRange  : Range := (min := -5, max := 5); 
  (* structure initialization for variable 'VRange' of structured data type 'Range': initializing the sub-elements 'min' and 'max' *)
END_VAR